Sets

Set is a mutable, unordered collection of unique, hashable elements(may be of same or different types), which is not indexed.

Creating Set

  • Creating an empty set
x = set()
  • Creating set with some initial elements
x = {2,3,0,'g'}
  • Creating an empty set with {} is not possible as {} is reserved for dictionary dict objects
In [1]:
x = {1,2,5,3}
x
Out[1]:
{1, 2, 3, 5}

Accessing Set Elements

Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior.

Operations on Set

Like any other collection, set supports membership operators in and not in, elements of set can be iterated. If A and B are 2 sets,Following is a list of other operations on set

  • A.union(B) - returns A\cup B
  • A.union_update(B) - A= A\cup B
  • A.intersection(B) - returns A\cap B
  • A.intersection_update(B) - A= A\cap B
  • A.isdisjoint(B) - returns A\cap B == \emptyset
  • A.issubset(B) - returns A\subseteq B
  • A.issuperset(B) - returns A\supseteq B

Other operations like set difference are also supported

In [2]:
x
Out[2]:
{1, 2, 3, 5}
In [3]:
x.union([2,4,6])
Out[3]:
{1, 2, 3, 4, 5, 6}
In [4]:
x.intersection([2,3])
Out[4]:
{2, 3}
In [5]:
x.intersection_update([1,3,4])
In [6]:
x
Out[6]:
{1, 3}

Note Graph and Sets

Many Graph Algorithms are modelled using sets. A Graph G is considered as a collection of sets of vertices V and sets of edges E

Set of Sets

In many cases, it is required to have set of sets as in case of finding subsets of a set. Since set is not hashable, it is not possible to have a ``set`` as an element of ``set``. In this case frozenset comes handy. The only difference between frozenset and a set is that frozenset is immutable. We have to reassign value to it if we want to modify it.